#ifndef OGLDRAWER_H
#define OGLDRAWER_H

#include <vector>
#include <QPointF>
#include <QtOpenGL/QtOpenGL>
#include "Curves/Interfaces/icurve.h"
#include "Curves/Objects/bezier.h"
#include "curveproperties.h"

using namespace std;

class OGLDrawer
{

public:
    /* Methods. */
    void DrawCurve( ICurve< QPointF >& icurve, const CurveProperties& properties );
    void DrawControlPoints( const ICurve< QPointF >& icurve, const CurveProperties& properties );
    void DrawControlPolyline( const ICurve< QPointF >& icurve, const CurveProperties& properties );
    void DrawSelectionBox( const CurveProperties& properties );
    void DrawConvexHull( ICurve< QPointF >& icurve, const CurveProperties& properties );
    void DrawPoint( const ICurve< QPointF >& icurve, const CurveProperties& properties, double t );

private:
    void DrawControlPoint(GLint x, GLint y, GLint radius, QColor color );

};

#endif // OGLDRAWER_H
